package com.zomiot.portal.config;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * MyBatis Plus配置类
 *
 * @author Joash_YI
 */
@Configuration
@MapperScan("com.zomiot.portal.**.mapper")
public class MyBatisPlusConfig {

    /**
     * MyBatis Plus插件配置
     *
     * 包含：
     * 1. 分页插件
     * 2. 乐观锁插件
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();

        // 1. 分页插件（必须添加，否则分页功能不生效）
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        // 设置分页合理化：当页数超过总页数时，自动跳转到第一页
        paginationInnerInterceptor.setOverflow(true);
        // 设置单页最大限制数量（防止恶意请求）
        paginationInnerInterceptor.setMaxLimit(500L);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);

        // 2. 乐观锁插件（如果实体有@Version注解的字段，自动处理乐观锁）
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());

        return interceptor;
    }
}
